HasOne.getRelationalFields   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
import Relation from "../Relation";
2
import {ModelStaticInterface} from "../../../JeloquentInterfaces";
3
import ForeignKey from "../Field/ForeignKey";
4
5
/**
6
 *
7
 */
8
export default class HasOne extends Relation {
9
10
    constructor(model: ModelStaticInterface) {
11
        super(model);
12
    }
13
14
    get originalValue(): unknown {
15
        return this.getValueByParentKey('originalPrimaryKey');
16
    }
17
18
    get value(): unknown {
19
        return this.getValueByParentKey('primaryKey');
20
    }
21
22
    getRelationalFields():Array<ForeignKey> {
23
        return [];
24
    }
25
26
    setName(): HasOne {
27
        this.foreignKey = `${this.$parent.snakeCaseClassName}_id`;
28
        return this;
29
    }
30
31
    private getValueByParentKey(parentProperty) {
32
        const keyIndex = this.model.getIndexByKey(this.foreignKey);
33
        return globalThis.Store.database().find(this.model.className,
34
            [...keyIndex.get(`${this.$parent[parentProperty]}`)?.values() ?? []]
35
        ).first();
36
    }
37
}